F# এ ডেটা টাইপস এবং ভেরিয়েবলস (Data Types and Variables in F#)
F# একটি স্ট্যাটিক্যালি টাইপড ভাষা, যার মানে হল যে ভেরিয়েবল বা এক্সপ্রেশন ঘোষণার সময় টাইপটি নির্ধারিত হয়। F# এ ডেটা টাইপ এবং ভেরিয়েবল ব্যবস্থাপনা অত্যন্ত গুরুত্বপূর্ণ, কারণ এটি টাইপ সেফটি নিশ্চিত করে এবং কোডের ভুল কমাতে সাহায্য করে। নিচে F# এর ডেটা টাইপ এবং ভেরিয়েবল ব্যবহারের কিছু মৌলিক ধারণা ও উদাহরণ দেওয়া হলো।
১. ভেরিয়েবলস (Variables)
F# তে ভেরিয়েবলস সাধারণত immutable (অপরিবর্তনীয়) থাকে, অর্থাৎ একবার একটি ভেরিয়েবলের মান নির্ধারিত হলে তা পরিবর্তন করা যায় না। তবে আপনি mutable ভেরিয়েবলও ব্যবহার করতে পারেন, যা পরিবর্তনযোগ্য হয়।
Immutable ভেরিয়েবল:
let x = 10
// x এর মান পরিবর্তন করা যাবে নাMutable ভেরিয়েবল:
let mutable y = 20
y <- 30 // y এর মান পরিবর্তিত হলোএখানে mutable কিওয়ার্ড দ্বারা y একটি পরিবর্তনযোগ্য ভেরিয়েবল তৈরি করা হয়েছে।
২. প্রাথমিক ডেটা টাইপস (Primitive Data Types)
F# এ কিছু প্রাথমিক ডেটা টাইপ রয়েছে যা সাধারণত অন্যান্য প্রোগ্রামিং ভাষায় পাওয়া যায়। এগুলি হল:
১. Integer (Int):
এটি পূর্ণসংখ্যা (Integer) ডেটা টাইপ।
let num = 42২. Floating Point (Float):
ফ্লোটিং পয়েন্ট ডেটা টাইপ, যা দশমিক সংখ্যা ধারণ করতে পারে।
let pi = 3.14
let temperature = -10.5৩. Boolean (Bool):
বুলিয়ান টাইপ দুটি মান ধারণ করতে পারে: true অথবা false।
let isActive = true
let isValid = false৪. Character (Char):
এটি একটি একক অক্ষর ধারণ করতে পারে। ফাংশনাল প্রোগ্রামিং ভাষায় এটি সিঙ্গেল কোটেশন '' দিয়ে নির্ধারিত হয়।
let letter = 'A'৫. String:
স্ট্রিং টাইপটি টেক্সট স্টোর করার জন্য ব্যবহৃত হয়। এটি ডাবল কোটেশন "" দ্বারা নির্ধারিত হয়।
let message = "Hello, F#!"৩. বেসিক কম্পোজিট টাইপস (Basic Composite Types)
F# তে কিছু বেসিক কম্পোজিট টাইপও রয়েছে, যেমন Tuple, List, Array ইত্যাদি।
১. Tuple:
একটি টুপল হল একাধিক ডেটা টাইপের সংমিশ্রণ। এটি বিভিন্ন ডেটা টাইপের মান একত্রে রাখার জন্য ব্যবহার করা হয়।
let person = ("Alice", 25) // A tuple of string and integer
let name = fst person // name হবে "Alice"
let age = snd person // age হবে 25২. List:
লিস্ট হল এক ধরনের ডেটা স্ট্রাকচার যা একাধিক মান ধারণ করতে পারে, এবং তা অপরিবর্তনীয় (immutable) হয়।
let numbers = [1; 2; 3; 4]
let first = List.head numbers // first হবে 1
let rest = List.tail numbers // rest হবে [2; 3; 4]৩. Array:
এটি পরিবর্তনযোগ্য (mutable) ডেটা স্ট্রাকচার যা একাধিক মান ধারণ করতে পারে।
let arr = [| 1; 2; 3 |]
arr.[0] <- 10 // arr হবে [| 10; 2; 3 |]৪. টাইপ ইনফারেন্স (Type Inference)
F# এর একটি গুরুত্বপূর্ণ বৈশিষ্ট্য হলো টাইপ ইনফারেন্স, যেখানে F# স্বয়ংক্রিয়ভাবে টাইপ নির্ধারণ করে, এবং ডেভেলপারকে টাইপ ঘোষণা করতে হয় না। এটি কোড লেখার সময় অনেক সুবিধা প্রদান করে।
let x = 10 // F# জানে এটি একটি integer
let name = "Alice" // F# জানে এটি একটি string
let isActive = true // F# জানে এটি একটি boolean৫. এনাম (Enumerations)
এনাম ব্যবহার করে আপনি একটি নির্দিষ্ট গ্রুপের মানগুলোকে সুসংগঠিতভাবে সংজ্ঞায়িত করতে পারেন।
type Day =
| Monday
| Tuesday
| Wednesday
| Thursday
| Friday
| Saturday
| Sunday
let today = Day.Monday৬. রেকর্ড (Record Types)
রেকর্ড হল একটি ডেটা টাইপ যা একাধিক ভিন্ন ভিন্ন প্রোপার্টি বা ফিল্ড ধারণ করতে পারে। রেকর্ডগুলি ব্যবহার করে আপনি ডেটা সংগঠিত এবং আরও বেশি অর্থপূর্ণভাবে সংজ্ঞায়িত করতে পারেন।
type Person = { Name: string; Age: int }
let person = { Name = "John"; Age = 30 }
let name = person.Name // name হবে "John"
let age = person.Age // age হবে 30৭. ইউনিয়ন টাইপ (Union Types)
F# তে অ্যালজেব্রিক ডেটা টাইপ (ADT) ব্যবহার করা হয়, যা ইউনিয়ন টাইপ নামে পরিচিত। ইউনিয়ন টাইপ ব্যবহার করে আপনি একাধিক বিকল্প মান একসাথে ধারণ করতে পারেন।
type Result =
| Success of string
| Failure of string
let result = Success("Operation completed successfully")৮. Optional Types (Option Type)
F# তে Option টাইপটি ব্যবহার করা হয় যেটি ঐচ্ছিক মান ধারণ করতে পারে। এটি Some বা None হতে পারে, যেখানে Some একটি মান ধারণ করে এবং None মানহীনতা বা অস্তিত্ব না থাকার প্রতিনিধিত্ব করে।
let findElement x =
if x > 0 then Some(x * 2)
else None
let result = findElement 5 // result হবে Some(10)উপসংহার
F# একটি শক্তিশালী ভাষা যেখানে স্ট্যাটিক টাইপিং এবং টাইপ ইনফারেন্স ব্যবহৃত হয়। F# এ বিভিন্ন ডেটা টাইপ, যেমন Integer, Float, Boolean, String, Tuple, Array, List এবং Record ব্যবহার করা হয়। এর মাধ্যমে আপনি উন্নত প্রোগ্রামিং কৌশল এবং কার্যকরী কোড লিখতে সক্ষম হবেন। F# এর Optional এবং Union টাইপের মাধ্যমে আরো জটিল ডেটা ম্যানিপুলেশন সহজ হয়ে ওঠে।